﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DAL.Interfejsi;
using sistem;
using MySql.Data.MySqlClient;

namespace DAL
{
    partial class DAL
    {
        public class PredmetDAO : IDaoCrud<Predmet>
        {
            #region IDaoCrud<Predmet> Members
            protected MySqlCommand c;
            public long create(Predmet entity)
            {
                try
                {
                    c = new MySqlCommand("insert into predmet (puni_naziv, skraceni_naziv, opis) values (@PuniNaziv, @SkraceniNaziv, @Opis);", con);
                    c.Parameters.AddWithValue("@PuniNaziv", entity.PuniNaziv);
                    c.Parameters.AddWithValue("@SkraceniNaziv", entity.SkraceniNaziv);
                    c.Parameters.AddWithValue("@Opis", entity.Opis);
                    c.ExecuteNonQuery();
                    return c.LastInsertedId;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public List<Predmet> getAll()
            {
                try
                {
                    c = new MySqlCommand("select * from predmet;", con);
                    MySqlDataReader r = c.ExecuteReader();
                    List<Predmet> predmeti = new List<Predmet>();
                    while (r.Read())
                    {
                        Predmet predmet = new Predmet();
                        predmet.ID = r.GetInt32("id");
                        predmet.PuniNaziv = r.GetString("puni_naziv");
                        predmet.SkraceniNaziv = r.GetString("skraceni_naziv");
                        predmet.Opis = r.GetString("opis");
                        predmeti.Add(predmet);
                    }
                    return predmeti;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Predmet read(Predmet entity)
            {
                try
                {
                    c = new MySqlCommand("select * from predmet where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    MySqlDataReader r = c.ExecuteReader();
                    Predmet predmet = new Predmet();
                    if (r.Read())
                    {
                        predmet.ID = r.GetInt32("id");
                        predmet.PuniNaziv = r.GetString("puni_naziv");
                        predmet.SkraceniNaziv = r.GetString("skraceni_naziv");
                        predmet.Opis = r.GetString("opis");
                    }
                    return predmet;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Predmet update(Predmet entity)
            {
                try
                {
                    c = new MySqlCommand("UPDATE predmet SET puni_naziv = @PuniNaziv, skraceni_naziv = @SkraceniNaziv, opis = @Opis WHERE predmet.id = 1;", con);
                    c.Parameters.AddWithValue("@PuniNaziv", entity.PuniNaziv);
                    c.Parameters.AddWithValue("@SkraceniNaziv", entity.SkraceniNaziv);
                    c.Parameters.AddWithValue("@Opis", entity.Opis);
                    //c.Parameters.AddWithValue("@ID", entity.ID);
                    c.ExecuteNonQuery();
                    return entity;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public void delete(Predmet entity)
            {
                try
                {
                    c = new MySqlCommand("delete from predmet where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", entity.ID);
                    c.ExecuteNonQuery();
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public Predmet getById(int id)
            {
                try
                {
                    c = new MySqlCommand("select * from predmet where id = @ID;", con);
                    c.Parameters.AddWithValue("@ID", id);
                    MySqlDataReader r = c.ExecuteReader();
                    Predmet predmet = new Predmet();
                    if (r.Read())
                    {
                        predmet.ID = r.GetInt32("id");
                        predmet.PuniNaziv = r.GetString("puni_naziv");
                        predmet.SkraceniNaziv = r.GetString("skraceni_naziv");
                        predmet.Opis = r.GetString("opis");
                    }
                    return predmet;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }

            public List<Predmet> getByExample(string name, string value)
            {
                try
                {
                    c = new MySqlCommand("select * from predmet where @Kolona = @Vrijednost;", con);
                    c.Parameters.AddWithValue("@Kolona", name);
                    c.Parameters.AddWithValue("@Vrijednost", value);
                    MySqlDataReader r = c.ExecuteReader();
                    List<Predmet> predmeti = new List<Predmet>();
                    while (r.Read())
                    {
                        Predmet predmet = new Predmet();
                        predmet.ID = r.GetInt32("id");
                        predmet.PuniNaziv = r.GetString("puni_naziv");
                        predmet.SkraceniNaziv = r.GetString("skraceni_naziv");
                        predmet.Opis = r.GetString("opis");
                        predmeti.Add(predmet);
                    }
                    return predmeti;
                }
                catch (Exception e)
                {
                    throw e;
                }
            }
            #endregion
        }
    }
}
